1. 定义主机


在部署overcloud的过程中,我们一定有很多需要自定义的地方。那么TripleO是如何实现自定义参数部署的呢?我们通过下面几个章节一一说明。

1.1 分配节点

在默认部署的情况下,tripleO 会从 ironic 中拥有的同一tag的node中任意挑选一台,这会导致ironic node-list 显示的主机与nova list 显示的主机编号不一致。可以通过为每个ironic node分配properties/capabilities属性来解决。

首先,为每个类型的node添加tag,例如第一台controller打上node:contoller-0 的tag,第二台controller 打上node:contoller-1的tag,以此类推。

  1. ironic node-update <id> replace properties/capabilities='node:controller-0,boot_option:local'
  2. ironic node-update <id> replace properties/capabilities='node:controller-1,boot_option:local'
  3. ...
  4. ironic node-update <id> replace properties/capabilities='node:compute-0,boot_option:local'
  5. ironic node-update <id> replace properties/capabilities='node:compute-1,boot_option:local'
  6. ...
  7. ironic node-update <id> replace properties/capabilities='node:ceph-storage-0,boot_option:local'
  8. ironic node-update <id> replace properties/capabilities='node:ceph-storage-1,boot_option:local'
  9. ...

一句话命令可以这样写

  1. list=(`ironic node-list|grep control|awk '{print $2}'`);for i in {0..2};do ironic node-update ${list[$i]} replace properties/capabilities="node:controller-$i,boot_option:local";done

在templates/environment 目录中创建scheduler_hints_env.yaml

scheduler_hints_env.yaml

  1. parameter_defaults:
  2. ControllerSchedulerHints:
  3. 'capabilities:node': 'controller-%index%'
  4. NovaComputeSchedulerHints:
  5. 'capabilities:node': 'compute-%index%'
  6. CephStorageSchedulerHints:
  7. 'capabilities:node': 'ceph-storage-%index%'

在部署时使用这个Environment File,同时每个节点的flavor要选择baremetal。

  1. openstack overcloud deploy --template ....
  2. -e scheduler_hints_env.yaml \
  3. --control-flavor baremetal \
  4. --compute-flavor baremetal \
  5. --ceph-storage-flavor baremetal
  6. ...

一共有这些Hints可以选择。

  1. ControllerSchedulerHints for Controller nodes.
  2. NovaComputeSchedulerHints for Compute nodes.
  3. BlockStorageSchedulerHints for Block Storage nodes.
  4. ObjectStorageSchedulerHints for Object Storage nodes.
  5. CephStorageSchedulerHints for Ceph Storage nodes.
  6. [ROLE]SchedulerHints for custom roles. Replace [ROLE] with the role name.

1.2 分配主机名

结合1.1 分配节点ID,还可以自定义每个节点的主机名。

scheduler_hints_env.yaml

  1. parameter_defaults:
  2. ControllerSchedulerHints:
  3. 'capabilities:node': 'controller-%index%'
  4. NovaComputeSchedulerHints:
  5. 'capabilities:node': 'compute-%index%'
  6. CephStorageSchedulerHints:
  7. 'capabilities:node': 'ceph-storage-%index%'
  8. HostnameMap:
  9. overcloud-controller-0: overcloud-controller-rack1-row1
  10. overcloud-controller-1: overcloud-controller-rack1-row2
  11. overcloud-controller-2: overcloud-controller-rack1-row3
  12. overcloud-compute-0: overcloud-compute-rack2-row1
  13. overcloud-compute-1: overcloud-compute-rack2-row2
  14. overcloud-compute-2: overcloud-compute-rack2-row3
  15. overcloud-ceph-storage-0: overcloud-ceph-rack3-row1
  16. ...

同样的,在部署时,不要忘了附加 scheduler_hints_env.yaml

  1. openstack overcloud deploy --template ....
  2. -e scheduler_hints_env.yaml \
  3. --control-flavor baremetal \
  4. --compute-flavor baremetal \
  5. --ceph-storage-flavor baremetal
  6. ···

1.3 自定义Role


overcloud 是由一系列角色组成的,比如controller、compute、Storage。每个默认角色都是在TripleO Heat Template 核心代码中定义的一组service。但是 TripleO Heat Template 还可以支持:

  • 创建自定义role
  • 从role 中添加或移除 service

这篇文章描述了如何自定义role、组合service。

指南和限制